/*
 *  for webpack config
 *  @author hewei
 *  @env  NodeJs
 *  @time 2017-08-30
 *  @for  sky free
 *  @webpack  config template for any one
 *  @language [zh,en]
 *
 * ********/
/***** developer env tools include ******/
/*{*///::模块 、库 、工具 导入区

    const env             = require('./build/webpack.env');// 项目构建环境配置
    const helper          = require('./build/webpack.build.helper');// 项目 构建小工具
    const _advance_config = require('./build/webpack.advanced.config'); //项目构建高级配置
    const _devServer      = require('./build/webpack.devServer');// 项目 开发服务器设置
    const _module         = require('./build/webpack.module');  // 模块（loaders） 集
    const _plugins        = require('./build/webpack.plugins'); // 项目打包 的 插件工具集
    /*}*/
/*****::配置区 config for webpack in this project with vue ((配置))*******/
    const config = require('./build/webpack.config.tpl');// 配置 模板
    // const merge_toggle = {}; // 合并 设置

    // 项目 配置生成


  // console.log(_plugins);

// 导出 配置 列表
if( env.webpack_config_export_way === env.config_export.config_export_obj )
{
  const real_config = helper.init(config,[_devServer,_module,_plugins,_advance_config],helper.def.config_merge_replace) ;
  return  module.exports = real_config ;
}
// 导出 条件 配置 函数
if( env.webpack_config_export_way === env.config_export.config_export_func )
{
    // env 是webpack CLI (命令行中带来的)
    // [eg: webpack --env.min --env.prod ] ==> env => {min:true,prod:true}
  return module.exports = function (_env,args) {
                // 不同的 环境 和 参数 导出 不同 配置
      var plugins = _plugins.plugins ;
      if('min'=== _env)
      {
            var conf = env.$uglify ;
            conf.test = /\.js$/;
            var uglify    = require('webpack').optimize.UglifyJsPlugin;
            _plugins.plugins = plugins.concat(new uglify(conf)) ;
      }

      const real_config = helper.init(config,[_devServer,_module,_plugins,_advance_config],helper.def.config_merge_replace) ;
               // console.warn(config);
                return real_config ;
    } ;
}
// 导出 异步操作 配置对象
if(  env.webpack_config_export_way === env.config_export.config_export_promise )
{
  return  module.exports = function () {
      const real_config = helper.init(config,[_devServer,_module,_plugins,_advance_config],helper.def.config_merge_replace) ;

        return  new Promise(function(resolve, reject) {
                    // do something developer want do [在导出结果前,可以先处理、添加或者修改对应数据]

                    setTimeout(function() {
                             resolve(real_config)
                    }, 1000);

                });
    } ;
}
//  不导出任何信息
if(  env.webpack_config_export_way === env.config_export.config_from_outsize )
{
   return module.exports = null;
}
// 异常
return {};